dexcsPlus / 全体サマリー

DEXCS2022 for OpenFOAM に同梱予定のdexcsPlus(簡単チュートリアル)について、全容が確定したので、ここに取り纏めておく。

  1. 種別
    • S:定常計算
    • su:DEXCSランチャーで定常計算後、スクリプトで非定常計算
    • U:非定常計算
  2. メッシュ:要素のセル数
  3. 計算時間:ClockTime
    • CPU :インテル® Core™ i9-11900K プロセッサー
      (8コア  | 3.5GHz | 16MB キャッシュ)
      OS : ubuntu-22.04
  4. Np:プロセッサ数

全般的な注意事項

DEXCSランチャーを初めて使う人には、一通り目を通していただきたい注意点を記しておきます。

また、dexcsPlusとして公開するFreeCADファイルは、DEXCS2022以外の環境で動作させることも可能ですが、そのような場合に特に留意すべき点についても記しておきます。

初期化について

各チュートリアルのフォルダ毎に、AllCleanDexcsというスクリプトが収納されており、これを実行(右クリック⇒「プログラムとして実行」)すれば完全初期化できます。

但し、DEXCS2022の環境でのみ有効。それ以外の環境で実行すると、全ファイルが消去されてしまいます。

解析コンテナの出力先について

FreeCADモデルを立ち上げた際に、以下のようなダイヤログ

が現れた場合に、その意味がよくわからない時は「デフォルトに戻す」を選択して下さい。

STLの最大メッシュ偏差について

3Dパーツが、球や円柱などの関数で表現される曲面の場合(冒頭の一覧表の備考欄に「STL偏差調整要」としたケース)、メッシュ外観で表面が滑らかでない場合は、STLエクスポートの最大メッシュ偏差を調整して下さい。

なお、3Dパーツが、STLファイルを3D化したパーツ(三角形の集合体)の場合は、この偏差は関係なく、STLファイルの形状通りに出力されます。

やり残した課題

DEXCS2022の今回、新たな取り組みとしてdexcsPlusを公開することにした。基本的に標準チュートリアルのsnappyHexMesh を使ってメッシュ作成するケースを題材に、約半数のケースについてDEXCSランチャーを使って簡単にメッシュ作成から、計算実行できるようになった。

まだまだやりたい事はたくさんあったが、そろそろお約束の公開時期(例年9月〜10月)も近づいたので、現時点までの成果を、一旦取り纏め、今後の課題(取り組み予定)も記しておく。

motorBikeチュートリアル

OpenFOAMで古くから、複雑形状モデルの定番としてmotorBikeチュートリアルがあり、当初はこれも同梱予定であったが、最終的に断念した。過去の経験(拙宅HP記事、やスライドショー記事)では、STLデータの修正により問題なく計算出来ていたのだが、今回の環境では何故か安定して計算できるケースとならなかった。

 

バッフルモデルについて

上記motorBikeの例でメッシュがうまく切れない最大の原因はバッフル(厚みのない板状データ)がたくさん存在する為であった。それ(motorBike)以外の、annualThermalMixerや、injectorPipe, mixerVesselAMI などにおいても、バッフルデータが存在しており、メッシュの歪が大きく計算安定性が損なわれたものの、かろうじてそれなりの結果は得られた。

これらは、バッフルを有限板圧のモデルに変更したらどうなるか?を調べてみたかったが、時間切れであった。

曲面モデルの関数モデル化について

一覧表の備考欄で、「STL偏差調整要」とあるケースは、そもそもOpenFOAMの標準チュートリアルにおいて、曲面を微小三角形で近似したSTLデータで構成してあった3Dパーツを、球や円柱といった関数で記述できるモデルに変更したモデルである。そもそもの解析目的を考えて、かようなモデルに変更するのは問題無いと考えられた。もちろん、STL化に際して適切なパラメタを使うことは前提であるが、FreeCAD上で見たモデルも見易くなっている。

しかし、予想に反して、OpenFOAMの標準チュートリアルにおいて使用しているSTLデータよりも、より滑らかな表面形状にする事によって、却ってメッシュ品質が悪化するという事態が生じた。具体的には、injectorPipe と、annualThermalMixer, mixerVesselAMIであり、一旦は曲面を関数モデルに置き換えたモデルとして構築し直し、FreeCADモデルとしても見易くなっていた。しかし、これらはいずれもバッフルデータを含むモデルであり、どうにも計算が安定せず発散した。バッフルデータとの関係性が疑われたが、これも時間切れで断念した。

メッシュレイヤーについて

OpenFOAMのsnappyHexMeshを使う標準チュートリアルでは、ほとんどのケースにおいてレイヤーを付与した計算になっていない。snappyHexMeshDict中、

addLayers false;

の箇所で、falseをTrueに変更して、簡単に付与した計算を実行できるケースも存在するが、そもそもレイヤーパラメタを指定しないケースも多く存在する。

個別のケース説明のページで、snappyHexMesh とcfMesh の比較も掲載しており、上記レイヤーのないケースでは、メッシュ数や計算安定性の面で、snappyHexMeshが優れているという結果になっているが、レイヤーを付与した場合にどうなるかの比較もやってみたかった。

システム面から見た補足注意事項

ユーザー目線からすると、何でもっと簡単・わかりやすく出来ないのか?と思いたくなる利用シーンがたくさんあるかと思います。開発者としてもそこは重々承知しておりますが、DEXCSは、既存のオープン系ツールのハックプロダクトであり、開発コストをかける訳にいきません。既存の仕組みをそのまま使わざるを得ないので、こうなっている・・・といった言い訳になるかもしれませんが、開発者も気になっている項目を取り纏めておきます。こうしたら、もっと良くなるというアイデアもあるかと思います。大歓迎ですので宜しく。

スクリプトの実行方法について

DEXCS2021(というかubuntu-20.04)までは、実行可能なスクリプトファイルは、ファイルマネージャー上でダブルクリックすると、そのまま(あるいは新たな端末上で)実行するように設定変更(カスタマイズ)が可能でしたが、ubuntu-22.04からは、これが出来なくなっています。

ファイルマネージャー上からは、右クリックメニューから「スクリプトとして実行」を選択して下さい。端末上から実行することも、もちろん可能です。

解析コンテナの出力先について

「デフォルト」の意味は、モデルの存在するディレクトリにケースファイルを作成するということです。

「はい」は、それ以外のフォルダを指定できる。しかし、FreeCADのAppImage版では、続いてのフォルダ選択ダイヤログが起動しないので、以下のダイヤログが表示され、

ローディング後に Output Path のプロパティを手作業で変更する必要があります。なお、この部分で、FreeCADのAppImage版を使わないで、FreeCAD-dairy版を使えば、ここでフォルダ選択ダイヤログが現れて、任意の出力先を選択することもできるのですが・・・。

「いいえ」は、強制的に「現在のFreeCADモデル」が指定する箇所にするということになりますが、「はい」の後のプロパティ変更をしないと、「いいえ」を押したのと同じ事になり、出力先が存在しないディレクトリを指定した状態になってしまい、ケースを作成することが出来ません。

「現在のFreeCADモデル」は、ユーザー名 dexcs さんが作成したモデルなので、/home/dexcs/Desktop/DEXCS/dexcsPlus/…以下に収納されている事になっており、それ以外の人の環境で使う場合にはこの部分の変更が必要になります。
本来、これはDEXCSセットアップ(setupDexcs.sh)の中で変更しておきたい所でしたが、FreeCADファイルそのものの変更になり、外部から変更する方法がわからなかったので、現状のやり方となっています。

FreeCADプロパティを外部から変更する方法

FreeCADの基本的な使い方として、コマンドラインで操作する方法があるので、原理的にはその方法で変更出来ても良さそうであった。たとえば以下のようなpythonスクリプト(名前をchangeOutputPath.py として保存)を作成しておいて、

				
					# -*- coding: utf-8 -*-
import FreeCAD
FreeCAD.open(u"/home/et/Desktop/testCfMesh/injectorPipe.FCStd")
FreeCAD.getDocument('injectorPipe').getObject('dexcsCfdAnalysis').OutputPath = "/home/et/Desktop/testCfMesh/test"
FreeCAD.getDocument('injectorPipe').saveAs(u"/home/et/Desktop/testCfMesh/injectorPipe.FCStd")

				
			

freecadcmd changeOutput.py

として実行すれば、dexcsCfdAnalysis コンテナの、プロパティ OutputPath の内容を変更してくれると考えられた。しかるに、確かに所定のプロパティが変更できることは確認できたものの、その他のパーツのプロパティまで変化してしまって、そのままでは使い物にならなくなってしまった。

ちなみに、上記スクリプトの4行目を削除して、単純にopenして、そのままsaveAsするだけのスクリプトを実行しても、同様に使い物にならなくなったので、問題の根は深いと考えられ、これ以上の調査は断念した。

STLの最大メッシュ偏差について

最大メッシュ偏差を変更する方法は、MeshDesignワークベンチの状態にて、「編集」⇒「設定」⇒「インポート/エクスポート」⇒「メッシュ形式」メニューの中にあります。一度設定しておけば、次回からのFreeCADを立ち上げた際に、その値が有効になります。最初から極端に小さくしておいても構いませんが、メッシュ作成時間に長時間要することになるので注意してください。

また、本設定は、何度も変更しているうちに、変更が適用されない状況に陥ることが多々あるようです。2回目以降の設定変更では、FreeCADのモデルを立ち上げ直して、パラメタを再確認してから「ケース作成」することを推奨します。

FreeCADのAppImage版とDaily版

FreeCADのLinux版には、AppImage版と、Daily版(その他にも標準パッケージ版があるが、Verが古い)があり、それらの違いについては、DEXCS2021のインストール方法メモの26,27ページに記してあるが、ここにも再掲(+DEXCS2022用に更新)しておく。

  • (注1)FEMワークベンチで使用可能なメッシュツールで、Daily版はGmshしか利用できない
  • (注2)一部のQtダイヤログがうまく動かないのと、TreeFoam起動ボタンと並列処理ボタンで起動される画面は一部の機能が不全
  • (注3)同一のCADモデルであっても、FreeCADのWindows版、Mac版で出力されるSTL品質と一致しない場合がある

切り替え方法

DEXCS2021では、Daily版をデフォルトとしたが、Daily版の更新が頻繁にあり、うまく動作しなくなることが多々あった為、DEXCS2022ではAppImage版をデフォルトとしてある。以下の方法で切り替えは可能。

  • Daily版を使用したい場合

$ sudo rm /usr/bin/freecad

$ sudo ln -s /usr/bin/freecad-daily /usr/bin/freecad

  • AppImage版を使用したい場合

$ sudo rm /usr/bin/freecad

$ sudo ln -s /opt/freecad /usr/bin/freecad

Share

「dexcsPlus / 全体サマリー」への2件のフィードバック

  1. ピンバック: dexcsPlus / wingMotion – オープンCAEコンサルタントOCSE^2

  2. ピンバック: dexcsPlus / cylinder – オープンCAEコンサルタントOCSE^2

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください